package com.manage.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.fasterxml.jackson.annotation.JsonFormat;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author Fitch
 * 2019/8/5
 */
public class ImageUtil {

    public static void main(String[] args) throws InterruptedException, IOException {
        String url = "C:\\Users\\Fitch\\Desktop\\题目_1.0\\A04理解思维\\反转图形\\反转图形";
        //dealPicture(url, url);
        drawbb();
    }

    /**
     * 生成图片对称图
     * @param sourceUrl
     * @param objectUrl
     */
    public static void dealPicture(String sourceUrl, String objectUrl) {
        File file = new File(sourceUrl);
        File[] files = file.listFiles();
        File[] var4 = files;
        int var5 = files.length;

        for(int var6 = 0; var6 < var5; ++var6) {
            File f = var4[var6];
            File temp = new File(f.toString());
            if (temp.isDirectory()) {
                dealPicture(f.toString(), objectUrl + StrUtil.split(f.toString(), sourceUrl)[1]);
            } else if (f.toString().indexOf(".jpg") > 0 || f.toString().indexOf(".png") > 0 || f.toString().indexOf(".jpeg") > 0 || f.toString().indexOf(".bmp") > 0) {
                try {
                    String sourceStr = f.toString();
                    String fileName = StrUtil.split(f.toString(), sourceUrl)[1];
                    fileName = fileName.split("\\.")[0] + "-1." + fileName.split("\\.")[1];
                    String objectImage = objectUrl + fileName;
                    File objectDir = new File(objectUrl);
                    if (!objectDir.exists()) {
                        objectDir.mkdirs();
                    }
                    Image im = ImageIO.read(f);
                    int w = im.getWidth((ImageObserver)null);
                    int h = im.getHeight((ImageObserver)null);
                    BufferedImage b = new BufferedImage(im.getWidth((ImageObserver)null), im.getHeight((ImageObserver)null), 2);
                    b.getGraphics().drawImage(im.getScaledInstance(w, h, 4), 0, 0, (ImageObserver)null);
                    BufferedImage b2 = new BufferedImage(im.getWidth((ImageObserver)null), im.getHeight((ImageObserver)null), 2);
                    b2.getGraphics().drawImage(im.getScaledInstance(w, h, 4), 0, 0, (ImageObserver)null);

                    for(int x = 0; x < h; ++x) {
                        for(int y = 0; y < w; ++y) {
                            int rgb = b.getRGB(y, x);
                            b2.setRGB(w - 1 - y, x, rgb);
                        }
                    }

                    ImageIO.write(b2, "png", new File(objectImage));
                    System.out.println(f.toString());
                } catch (IOException var21) {
                    var21.printStackTrace();
                }
            }
        }

    }

    public static void drawaa(String sourceUrl, String objectUrl){

        File file = new File(sourceUrl);
        File[] files = file.listFiles();
        File[] var4 = files;
        int var5 = files.length;

        for(int var6 = 0; var6 < var5; ++var6) {
            File f = var4[var6];
            File temp = new File(f.toString());
            if (temp.isDirectory()) {
                dealPicture(f.toString(), objectUrl + StrUtil.split(f.toString(), sourceUrl)[1]);
            } else if (f.toString().indexOf(".jpg") > 0 || f.toString().indexOf(".png") > 0 || f.toString().indexOf(".jpeg") > 0 || f.toString().indexOf(".bmp") > 0) {
                try {
                    String sourceStr = f.toString();
                    String fileName = StrUtil.split(f.toString(), sourceUrl)[1];
                    fileName = fileName.split("\\.")[0] + "-1." + fileName.split("\\.")[1];
                    String objectImage = objectUrl + fileName;
                    File objectDir = new File(objectUrl);
                    if (!objectDir.exists()) {
                        objectDir.mkdirs();
                    }
                    Image im = ImageIO.read(f);
                    int w = im.getWidth((ImageObserver)null);
                    int h = im.getHeight((ImageObserver)null);
                    BufferedImage b = new BufferedImage(im.getWidth((ImageObserver)null), im.getHeight((ImageObserver)null), 2);
                    b.getGraphics().drawImage(im.getScaledInstance(w, h, 4), 0, 0, (ImageObserver)null);
                    BufferedImage b2 = new BufferedImage(im.getWidth((ImageObserver)null), im.getHeight((ImageObserver)null), 2);
                    b2.getGraphics().drawImage(im.getScaledInstance(w, h, 4), 0, 0, (ImageObserver)null);
                    for(int x = 0; x < h; ++x) {
                        for(int y = 0; y < w; ++y) {
                            int rgb = b.getRGB(y, x);
                            b2.setRGB(w - 1 - y, x, -5628142);
                        }
                    }

                    ImageIO.write(b2, "png", new File(objectImage));
                    System.out.println(f.toString());
                } catch (IOException var21) {
                    var21.printStackTrace();
                }
            }
        }
    }

    public static  void  drawbb(){
        try {

            //读取图片文件，得到BufferedImage对象
            BufferedImage bimg = ImageIO.read(new FileInputStream("C:\\Users\\Fitch\\Desktop\\表情\\新建文件夹\\red.jpg"));
            //得到Graphics2D 对象
            Graphics2D g2d = (Graphics2D) bimg.getGraphics();
            //设置颜色和画笔粗细
            g2d.setColor(Color.blue);
            g2d.setStroke(new BasicStroke(3));
            //绘制图案或文字
            g2d.drawString("文本", 261, 118);
            //保存新图片
            ImageIO.write(bimg, "JPG", new FileOutputStream("C:\\Users\\Fitch\\Desktop\\表情\\新建文件夹\\red1.jpg"));
        }catch (Exception e){
            System.out.println("异常");
        }
    }


    public static void dealData(){
        StringBuffer clickOrder=new StringBuffer();
        clickOrder.append("{\"clickOrder\":\"[{3133.041666666666,4456.458333333333,763},{3133.041666666666,4456.458333333333,798},{3133.041666666666,4456.458333333333,839},{3133.041666666666,4456.458333333333,880},{3132.041666666666,4455.458333333333,919},{3131.041666666666,4455.458333333333,951},{3131.041666666666,4454.458333333333,976},{3131.041666666666,4454.458333333333,994},{3132.041666666666,4453.458333333333,1005},{3134.041666666666,4452.458333333333,1011},{3134.041666666666,4451.458333333333,1013},{3135.041666666666,4451.458333333333,1014},{3135.041666666666,4450.458333333333,1015},{3136.041666666666,4449.458333333333,1015},{3136.041666666666,4449.458333333333,1015},{3136.041666666666,4449.458333333333,1016},{3136.041666666666,4449.458333333333,1015},{3137.041666666666,4449.458333333333,1013},{3138.041666666666,4448.458333333333,1012},{3138.041666666666,4448.458333333333,1010},{3139.041666666666,4448.458333333333,1011},{3139.041666666666,4447.458333333333,1012},{3139.041666666666,4447.458333333333,1014},{3138.041666666666,4447.458333333333,1016},{3138.041666666666,4447.458333333333,1017},{3138.041666666666,4447.458333333333,1018},{3138.041666666666,4447.458333333333,1019},{3139.041666666666,4446.458333333333,1021},{3139.041666666666,4446.458333333333,1022},{3139.041666666666,4447.458333333333,1024},{3139.041666666666,4447.458333333333,1026},{3138.041666666666,4447.458333333333,1027},{3137.041666666666,4447.458333333333,1028},{3138.041666666666,4447.458333333333,1030},{3138.041666666666,4447.458333333333,1031},{3137.041666666666,4447.458333333333,1036},{3138.041666666666,4447.458333333333,1042},{3137.041666666666,4448.458333333333,1049},{3137.041666666666,4448.458333333333,1057},{3137.041666666666,4448.458333333333,1062},{3137.041666666666,4448.458333333333,1066},{3137.041666666666,4448.458333333333,1070},{3137.041666666666,4447.458333333333,1072},{3137.041666666666,4447.458333333333,1074},{3137.041666666666,4447.458333333333,1076},{3137.041666666666,4447.458333333333,1076},{3137.041666666666,4448.458333333333,1076},{3137.041666666666,4447.458333333333,1077},{3137.041666666666,4447.458333333333,1078},{3138.041666666666,4447.458333333333,1078},{3137.041666666666,4447.458333333333,1078},{3137.041666666666,4447.458333333333,1078},{3137.041666666666,4447.458333333333,1079},{3137.041666666666,4447.458333333333,1079},{3138.041666666666,4447.458333333333,1079},{3139.041666666666,4447.458333333333,1079},{3139.041666666666,4447.458333333333,1080},{3139.041666666666,4446.458333333333,1080},{3139.041666666666,4446.458333333333,1081},{3138.041666666666,4446.458333333333,1081},{3139.041666666666,4446.458333333333,1081},{3139.041666666666,4446.458333333333,1081},{3139.041666666666,4446.458333333333,1082},{3139.041666666666,4446.458333333333,1082},{3140.041666666666,4446.458333333333,1082},{3140.041666666666,4445.458333333333,1082},{3140.041666666666,4445.458333333333,1082},{3141.041666666666,4445.458333333333,1083},{3140.041666666666,4445.458333333333,1083},{3140.041666666666,4445.458333333333,1084},{3140.041666666666,4445.458333333333,1084},{3140.041666666666,4445.458333333333,1085},{3141.041666666666,4444.458333333333,1085},{3141.041666666666,4444.458333333333,1085},{3141.041666666666,4443.458333333333,1085},{3141.041666666666,4444.458333333333,1086},{3141.041666666666,4444.458333333333,1086},{3141.041666666666,4444.458333333333,1087},{3141.041666666666,4444.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1086},{3141.041666666666,4443.458333333333,1086},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1086},{3141.041666666666,4443.458333333333,1086},{3141.041666666666,4443.458333333333,1086},{3141.041666666666,4442.458333333333,1086},{3141.041666666666,4442.458333333333,1086},{3141.041666666666,4442.458333333333,1087},{3141.041666666666,4442.458333333333,1087},{3141.041666666666,4442.458333333333,1087},{3141.041666666666,4442.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3142.041666666666,4443.458333333333,1086},{3142.041666666666,4443.458333333333,1086},{3142.041666666666,4443.458333333333,1086},{3142.041666666666,4443.458333333333,1086},{3142.041666666666,4443.458333333333,1086},{3141.041666666666,4443.458333333333,1086},{3141.041666666666,4443.458333333333,1086},{3141.041666666666,4443.458333333333,1085},{3141.041666666666,4442.458333333333,1085},{3141.041666666666,4442.458333333333,1085},{3142.041666666666,4443.458333333333,1084},{3142.041666666666,4443.458333333333,1084},{3142.041666666666,4443.458333333333,1085},{3142.041666666666,4443.458333333333,1084},{3141.041666666666,4443.458333333333,1084},{3141.041666666666,4443.458333333333,1084},{3141.041666666666,4443.458333333333,1083},{3141.041666666666,4443.458333333333,1083},{3141.041666666666,4443.458333333333,1084},{3141.041666666666,4443.458333333333,1084},{3141.041666666666,4442.458333333333,1084},{3141.041666666666,4442.458333333333,1085},{3141.041666666666,4443.458333333333,1085},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1088},{3142.041666666666,4444.458333333333,1087},{3142.041666666666,4443.458333333333,1088},{3142.041666666666,4443.458333333333,1086},{3142.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1087},{3141.041666666666,4443.458333333333,1088},{3141.041666666666,4443.458333333333,1088},{3141.041666666666,4443.458333333333,1089},{3142.041666666666,4443.458333333333,1089},{3142.041666666666,4443.458333333333,1089},{3142.041666666666,4443.458333333333,1089},{3142.041666666666,4443.458333333333,1089},{3141.041666666666,4442.458333333333,1088},{3142.041666666666,4442.458333333333,1088},{3141.041666666666,4442.458333333333,1086},{3142.041666666666,4442.458333333333,1083},{3142.041666666666,4442.458333333333,1065},{3142.041666666666,4442.458333333333,1012},{3143.041666666666,4441.458333333333,913},{3144.041666666666,4440.458333333333,751},{3146.041666666666,4439.458333333333,555},{3148.041666666666,4438.458333333333,365},{3150.041666666666,4437.458333333333,7},{2465.041666666666,7350.458333333333,550},{2464.041666666666,7350.458333333333,628},{2463.041666666666,7351.458333333333,678},{2463.041666666666,7351.458333333333,726},{2462.041666666666,7352.458333333333,780},{2462.041666666666,7353.458333333333,837},{2462.041666666666,7353.458333333333,888},{2462.041666666666,7354.458333333333,933},{2462.041666666666,7355.458333333333,968},{2462.041666666666,7356.458333333333,999},{2462.041666666666,7356.458333333333,1027},{2461.041666666666,7357.458333333333,1049},{2461.041666666666,7357.458333333333,1067},{2461.041666666666,7358.458333333333,1078},{2461.041666666666,7358.458333333333,1086},{2461.041666666666,7358.458333333333,1090},{2461.041666666666,7358.458333333333,1092},{2461.041666666666,7358.458333333333,1095},{2461.041666666666,7358.458333333333,1095},{2462.041666666666,7358.458333333333,1096},{2462.041666666666,7358.458333333333,1097},{2462.041666666666,7358.458333333333,1098},{2462.041666666666,7358.458333333333,1098},{2461.041666666666,7358.458333333333,1100},{2461.041666666666,7358.458333333333,1100},{2462.041666666666,7358.458333333333,1101},{2462.041666666666,7358.458333333333,1101},{2462.041666666666,7358.458333333333,1101},{2462.041666666666,7358.458333333333,1102},{2462.041666666666,7358.458333333333,1103},{2462.041666666666,7358.458333333333,1104},{2462.041666666666,7358.458333333333,1104},{2461.041666666666,7359.458333333333,1105},{2461.041666666666,7358.458333333333,1105},{2461.041666666666,7358.458333333333,1106},{2462.041666666666,7359.458333333333,1107},{2462.041666666666,7358.458333333333,1107},{2462.041666666666,7358.458333333333,1108},{2462.041666666666,7358.458333333333,1110},{2461.041666666666,7358.458333333333,1112},{2461.041666666666,7358.458333333333,1116},{2461.041666666666,7359.458333333333,1119},{2461.041666666666,7359.458333333333,1122},{2461.041666666666,7359.458333333333,1124},{2460.041666666666,7359.458333333333,1126},{2461.041666666666,7358.458333333333,1128},{2461.041666666666,7358.458333333333,1129},{2461.041666666666,7358.458333333333,1131},{2461.041666666666,7358.458333333333,1132},{2461.041666666666,7359.458333333333,1133},{2461.041666666666,7359.458333333333,1136},{2461.041666666666,7359.458333333333,1137},{2460.041666666666,7359.458333333333,1138},{2461.041666666666,7359.458333333333,1139},{2461.041666666666,7359.458333333333,1138},{2461.041666666666,7359.458333333333,1139},{2461.041666666666,7359.458333333333,1139},{2461.041666666666,7359.458333333333,1140},{2461.041666666666,7359.458333333333,1141},{2461.041666666666,7359.458333333333,1142},{2461.041666666666,7359.458333333333,1142},{2461.041666666666,7359.458333333333,1142},{2461.041666666666,7359.458333333333,1142},{2461.041666666666,7359.458333333333,1142},{2461.041666666666,7359.458333333333,1143},{2461.041666666666,7359.458333333333,1144},{2461.041666666666,7359.458333333333,1145},{2461.041666666666,7359.458333333333,1145},{2461.041666666666,7359.458333333333,1146},{2461.041666666666,7359.458333333333,1146},{2461.041666666666,7359.458333333333,1147},{2461.041666666666,7359.458333333333,1147},{2461.041666666666,7359.458333333333,1146},{2461.041666666666,7359.458333333333,1146},{2461.041666666666,7359.458333333333,1147},{2461.041666666666,7359.458333333333,1147},{2461.041666666666,7359.458333333333,1148},{2460.041666666666,7359.458333333333,1148},{2461.041666666666,7359.458333333333,1147},{2460.041666666666,7359.458333333333,1147},{2461.041666666666,7359.458333333333,1146},{2461.041666666666,7359.458333333333,1147},{2461.041666666666,7359.458333333333,1147},{2461.041666666666,7359.458333333333,1147},{2461.041666666666,7359.458333333333,1148},{2461.041666666666,7359.458333333333,1148},{2461.041666666666,7360.458333333333,1148},{2461.041666666666,7360.458333333333,1148},{2461.041666666666,7360.458333333333,1147},{2460.041666666666,7360.458333333333,1148},{2461.041666666666,7359.458333333333,1148},{2461.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1148},{2460.041666666666,7359.458333333333,1147},{2460.041666666666,7359.458333333333,1148},{2460.041666666666,7360.458333333333,1148},{2460.041666666666,7360.458333333333,1149},{2460.041666666666,7360.458333333333,1149},{2460.041666666666,7360.458333333333,1149},{2461.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1149},{2461.041666666666,7359.458333333333,1150},{2461.041666666666,7359.458333333333,1150},{2461.041666666666,7359.458333333333,1150},{2461.041666666666,7359.458333333333,1149},{2461.041666666666,7359.458333333333,1150},{2461.041666666666,7359.458333333333,1150},{2461.041666666666,7359.458333333333,1149},{2461.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1149},{2460.041666666666,7359.458333333333,1148},{2460.041666666666,7359.458333333333,1147},{2460.041666666666,7359.458333333333,1133},{2461.041666666666,7359.458333333333,1099},{2461.041666666666,7360.458333333333,1031},{2461.041666666666,7360.458333333333,916},{2461.041666666666,7360.458333333333,759},{2462.041666666666,7360.458333333333,571},{2462.041666666666,7361.458333333333,383},{2460.041666666666,7361.458333333333,230},{2458.041666666666,7361.458333333333,1},{2905.041666666666,7988.458333333333,150},{2904.041666666666,7988.458333333333,201},{2903.041666666666,7988.458333333333,252},{2902.041666666666,7988.458333333333,299},{2900.041666666666,7988.458333333333,341},{2899.041666666666,7988.458333333333,388},{2898.041666666666,7988.458333333333,441},{2898.041666666666,7988.458333333333,499},{2897.041666666666,7988.458333333333,559},{2897.041666666666,7989.458333333333,612},{2897.041666666666,7989.458333333333,658},{2897.041666666666,7989.458333333333,698},{2897.041666666666,7990.458333333333,732},{2897.041666666666,7990.458333333333,765},{2896.041666666666,7991.458333333333,793},{2896.041666666666,7992.458333333333,818},{2896.041666666666,7992.458333333333,839},{2896.041666666666,7993.458333333333,856},{2897.041666666666,7992.458333333333,871},{2897.041666666666,7992.458333333333,890},{2897.041666666666,7993.458333333333,912},{2897.041666666666,7993.458333333333,935},{2897.041666666666,7993.458333333333,956},{2897.041666666666,7994.458333333333,975},{2897.041666666666,7994.458333333333,991},{2897.041666666666,7995.458333333333,1005},{2897.041666666666,7995.458333333333,1018}]\"}");
        Object json= JSON.parse(clickOrder.toString());
        System.out.println(json);
    }
}
